# Packages
pacman::p_load(tidyverse, sp, leaflet)

# Get data
data <- openxlsx::read.xlsx("data/parks.xlsx")

# Logos
logo_url <- list.files("logos", full.names = T)

# Split coordinate column
data <- data %>%
  tidyr::separate(Coordinates, c('Lat', 'Long'), sep = ", ") %>%
  mutate(
    Lat = as.numeric(Lat), Long = as.numeric(Long),
    Logo_url = logo_url
  )

Tilanne: 59 % puistoista käyty (24 / 41)!

Kartta

# GPX files
# https://medium.com/@mark.reuter/parsing-gps-gpx-files-with-r-21ea0a694da8
routes <- list.files("data/gpx", recursive = T, full.names = T)

gpx <- list()
for (i in 1:length(routes)) {
  cat(paste0(routes[i], "  "))
  gpx[[i]] <- xml2::read_html(routes[i]) %>% # Parse
    xml2::xml_find_all("//trkpt") %>% # The lat and long data
    xml2::xml_attrs() %>% bind_rows() %>%
    mutate(route = i)
}
## data/gpx/2021-06_kolovesi/activity_6981698265.gpx  data/gpx/2021-06_kolovesi/activity_6981860001.gpx  data/gpx/2021-06_kolovesi/activity_6989726017.gpx  data/gpx/2021-06_kolovesi/activity_6989727321.gpx  data/gpx/2021-06_kolovesi/activity_6989744487.gpx  data/gpx/2021-09_koli/activity_7421814156.gpx  data/gpx/2021-09_koli/activity_7427486654.gpx  data/gpx/2021-10_koli/activity_7666877317.gpx  data/gpx/2022-07_leivonmäki/activity_9136787374.gpx  data/gpx/2022-07_leivonmäki/activity_9137844187.gpx  data/gpx/2022-07_oulanka/activity_9192512881.gpx  data/gpx/2022-07_oulanka/activity_9200220926.gpx  data/gpx/2022-07_oulanka/activity_9209380627.gpx  data/gpx/2022-07_oulanka/activity_9210216091.gpx  data/gpx/2022-07_pyhä-luosto/activity_9235845391.gpx  data/gpx/2022-07_pyhä-luosto/activity_9241381717.gpx  data/gpx/2022-07_pyhä-luosto/activity_9247623691.gpx  data/gpx/2022-07_riisitunturi/activity_9252480963.gpx  data/gpx/2022-09_etelä-konnevesi/activity_9696907100.gpx  data/gpx/2022-09_pallas-yllästunturi/activity_9675343727.gpx  data/gpx/2022-09_pallas-yllästunturi/activity_9692648640.gpx  data/gpx/2022-09_pallas-yllästunturi/activity_9692658405.gpx  data/gpx/2022-09_pallas-yllästunturi/activity_9692663429.gpx  data/gpx/2023-08_syöte/activity_11765773882.gpx  data/gpx/2023-08_syöte/activity_11773266471.gpx  data/gpx/2023-08_syöte/activity_11774082649.gpx  data/gpx/2023-08_syöte/activity_11777316551.gpx  data/gpx/2024-07_tiilikkajärvi/activity_16390852119.gpx  data/gpx/2024-07_tiilikkajärvi/activity_16405393961.gpx  data/gpx/2024-08_UKK/activity_16742600589.gpx  data/gpx/2024-08_UKK/activity_16766364727.gpx  data/gpx/2024-08_UKK/activity_16766364908.gpx  data/gpx/2024-08_UKK/activity_16766365735.gpx  data/gpx/2024-08_UKK/activity_16766961701.gpx  data/gpx/2024-10_koli/activity_17266394023.gpx  data/gpx/2024-10_koli/activity_17275541365.gpx
gpxdf <- bind_rows(gpx) %>%
  mutate(lat = as.numeric(lat), lon = as.numeric(lon))
# head(gpxdf)
# Visited icons
visited <- data %>% filter(Visit == "Joo")
# visited_icons <- icons(
#   iconUrl = visited$Logo_url,
#   iconWidth = 40, iconHeight = 30,
#   iconAnchorX = 0, iconAnchorY = 0
# )

# Not yet
notyet <- data %>% filter(Visit != "Joo")
# notyet_icons <- icons(
#   iconUrl = "help-circle.svg",
#   iconWidth = 20, iconHeight = 20,
#   iconAnchorX = 0, iconAnchorY = 0
# )


# Simple pins
visited_icons <- icons(
  iconUrl = "pin.png",
  iconWidth = 30, iconHeight = 30,
  iconAnchorX = 0, iconAnchorY = 0
)
notyet_icons <- icons(
  iconUrl = "pin2.png",
  iconWidth = 30, iconHeight = 30,
  iconAnchorX = 0, iconAnchorY = 0
)


# Plot
basemap <- data %>%
  leaflet() %>%
  addTiles() %>%
  addMarkers(
    data = visited, ~Long, ~Lat,
    label = paste0(visited$Park_short, "\n", visited$Dates),
    icon = visited_icons
  ) %>%
  addMarkers(
    data = notyet, ~Long, ~Lat,
    label = notyet$Park_short,
    icon = notyet_icons
  )
    
    
  # addMarkers(
  #   data = visited, ~Long, ~Lat,
  #   label = paste0(visited$Park_short, "\n", visited$Dates),
  #   icon = visited_icons
  # ) %>%
  # addMarkers(
  #   data = notyet, ~Long, ~Lat,
  #   label = notyet$Park_short,
  #   icon = notyet_icons
  # )

# Add gpx routes
for (i in 1:length(routes)) {
  basemap <- basemap %>%
    addPolylines(
      data = gpxdf %>% filter(route == i),
      lat = ~lat,
      lng = ~lon,
      color = "#008B00",
      opacity = 0.8,
      weight = 3
    )
}
basemap

Käydyt puistot merkitty logolla ja käymättömät kysymysmerkillä.

Lähteet

Kartta on tehty käyttäen R-paketteja sp ja leaflet.

Koordinaatit osoitteesta: kartta.com/muut-kartat/suomen-kansallispuistot/.